home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib15.dsk / SLOT FINDER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  47 lines

  1. 10  REM  **********************
  2. 11  REM  *    SLOT FINDER     *
  3. 12  REM  * BY STEVEN WEYHRICH *
  4. 13  REM  * COPYRIGHT (C) 1983 *
  5. 14  REM  * BY MICROSPARC, INC *
  6. 15  REM  * LINCOLN, MA. 01773 *
  7. 16  REM  **********************
  8. 30  REM  ADAPTED FROM PROGRAM "CONFIG" IN CONTACT #6, APPLE USER'S GROUP NEWSLETTER OF OCTOBER 1979
  9. 40  REM  IDENTIFIES SLOTS BY WHICH CARDS ARE PLUGGED INTO THEM
  10. 50 C000 = 49152:C100 = 49408:C700 = 50944: REM  MEMORY ADDRESSES
  11. 60 N = 7: REM  NUMBER OF CARDS DEFINED
  12. 70 R1 = 10:R2 = 15: REM  RELATIVE BYTE IN EACH SLOT
  13. 80  DIM B1(N),B2(N),NAME$(N),CS(2),SLOT(7)
  14. 90 B1(1) = 138:B2(1) = 120:NAME$(1) = "SILENTYPE PRINTER CARD"
  15. 100 B1(2) = 120:B2(2) = 072:NAME$(2) = "SERIAL PRINTER CARD"
  16. 110 B1(3) = 036:B2(3) = 060:NAME$(3) = "DISK CONTROLLER CARD"
  17. 120 B1(4) = 038:B2(4) = 072:NAME$(4) = "COMMUNICATIONS CARD"
  18. 130 B1(5) = 255:B2(5) = 007:NAME$(5) = "HAYES MICROMODEM II"
  19. 140 B1(6) = 038:B2(6) = 197:NAME$(6) = "EMULATION SERIAL CARD"
  20. 141 B1(7) = 021:B2(7) = 244:NAME$(7) = "APPLE MOUSE CARD"
  21. 150  GOSUB 240: REM  CHECK THE SLOTS
  22. 160  REM  REPORT ON RESULTS OF SEARCH
  23. 170  FOR I = 1 TO 7
  24. 180  PRINT "SLOT "I;
  25. 190  IF SLOT(I) = 0  THEN  PRINT " IS EMPTY"
  26. 200  IF SLOT(I) >0  THEN  PRINT " HAS A "NAME$(SLOT(I))
  27. 210  PRINT : NEXT I
  28. 220  END 
  29. 230  REM  ********************** SLOT FINDER SUBROUTINE **********************
  30. 240  FOR I = 1 TO 7:SLOT(I) = 0: NEXT I
  31. 250  FOR S = C100 TO C700  STEP 256
  32. 260 SLOT = (S -C000)/256: REM  IDENTIFY THE SLOT #
  33. 270  REM  MAKE 3 PASSES OVER SLOT MEMORY
  34. 280  FOR K = 0 TO 2:CS(K) = 0
  35. 290  FOR I = 0 TO 255  STEP 64
  36. 300 CS(K) = CS(K) + PEEK(S +I)
  37. 310  NEXT I: NEXT K
  38. 320  REM  NOW CHECK IF SUM FROM EACH PASS
  39. 330  REM  IS THE SAME; IF NOT, OR IF ALL
  40. 340  REM  BYTES ARE $FF, THEN SLOT IS EMPTY
  41. 350  IF CS(0) < >CS(1)  OR CS(0) < >CS(2)  OR CS(1) < >CS(2)  OR CS(0) = 1020  OR CS(1) = 1020  OR CS(2) = 1020  THEN 400: REM  EMPTY SLOT
  42. 360  REM  IDENTIFY THE CARD
  43. 370  FOR I = 1 TO N
  44. 380  IF  PEEK(S +R1) = B1(I)  AND  PEEK(S +R2) = B2(I)  THEN SLOT(SLOT) = I:I = N: REM  A MATCH; TERMINATE LOOP
  45. 390  NEXT I
  46. 400  NEXT S: REM  CHECK THE NEXT SLOT
  47. 410  RETURN